#include"thread.hpp"
#include<iostream>
#include<memory>
#include<unordered_map>

#define NUM 10
using thread_ptr_t = std::shared_ptr<Thread::myThread>;
int main()
{
    std::unordered_map<std::string , thread_ptr_t> threads;
    thread_ptr_t t =std::make_shared<Thread::myThread>([](){
            while(true)
            {
                std::cout<<"I am a thread "<<std::endl;
                sleep(1);
            }

        });
        threads[t->Name()]=t;
        threads[t->Name()]->Start();
        threads[t->Name()]->Join();
    
    //     threads[t->Name()]=t;
    // std::unordered_map<std::string , thread_ptr_t> threads;
    // for(int i=0;i<NUM;i++)
    // {
    //     thread_ptr_t t = std::make_shared<Thread::myThread>([](){
    //         while(true)
    //         {
    //             std::cout<<"I am a thread "<<std::endl;
    //             sleep(1);
    //         }

    //     });
    //     threads[t->Name()]=t;
    // }
    // for(auto e:threads)
    // {
    //     std::cout<<"线程start"<<std::endl;
    //     e.second->Start();
    // }
    // for(auto e:threads)
    // {
    //     std::cout<<"线程Join"<<std::endl;
    //     e.second->Join();
    // }
    // Thread::myThread t([](){
    //     while(true)
    //     {
    //         std::cout<<"I am mythread"<<std::endl;
    //         sleep(1);
    //     }

    // });
    // t.Start();
    // sleep(5);
    // t.Stop();
    // std::cout << "Stop thread : " << t.Name()<< std::endl;
    // sleep(1);
    // t.Join();
    // std::cout << "Join thread : " << t.Name()<< std::endl;
}